package csw;

import java.util.Scanner;

public class J16Ch05Calculator {

	public static void main(String []args){
	
		
		
		
		String msg = "두 정수와 연산자를 입력하세요.";
		Scanner sc = new Scanner(System.in);
		//new 연산자를 이용한 객체 생성은 최대한 천천히 나중에 생성한다.
		//업캐스팅을 이용하여 참조변수 cal 선언
		J16Cal cal = null;
		J16CalService cs = new J16CalService();
		
		System.out.println(msg);
		int a = sc.nextInt();
		int b = sc.nextInt();
		String c = sc.next();
		
		switch(c){
		case "+": cal = new J16Add();
									cal.setValue(a,b);
									cs.calculate(cal,"+");
									break;
		case "-": cal = new J16Sub();	
									cal.setValue(a,b);
									cs.calculate(cal,"-");
									break;
		case "*": cal = new J16Mul();				
									cal.setValue(a,b);
									cs.calculate(cal,"*");
									break;
		case "/": cal = new J16Div();	
									cal.setValue(a,b);
									cs.calculate(cal,"/");
									break;
		
		}
		sc.close();
		
		
	}//main
}//class


class J16Cal{
	private int x;
	private int y;
	//생성자 생략  -setValue()로 대신
	public void setValue(int x,int y){
		this.x = x;
		this.y = y;
	}
	@Override
	public String toString() {
		String result = "";
		result += x +"/" + y;
		return result ;
	}
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
	
	}
class J16Add extends J16Cal{}
class J16Sub extends J16Cal{}
class J16Mul extends J16Cal{}
class J16Div extends J16Cal{}

interface J16CalIService{
	void calculate(J16Cal c,String type);
}
class J16CalService
		implements J16CalIService{

	@Override
	public void calculate(J16Cal c, String type) {
		int result = 0;
		switch(type){
		case "+": result = c.getX() + c.getY();
		break;
		
		case "-": result = c.getX() - c.getY();
		break;
		
		case "*": result = c.getX() * c.getY();
		break;
		
		case "/": result = c.getX() / c.getY();
		break;
			}
	System.out.println(result);
	}
}